1. Field of the Invention
This invention generally relates to managing resources among multiple operating systems within a logically partitioned data processing system. More specifically, the invention relates to methods and systems for managing access to resources, such as IO resources, within such a data processing system.
2. Background Art
A logical partitioning option (LPAR) within a data processing system (platform) allows multiple copies of a single operating system (OS) or multiple heterogeneous operating systems to be simultaneously run on a single data processing system platform. A partition, within which an operating system image runs, is assigned a non-overlapping sub-set of the platform's resources. These platform allocable resources include one or more architecturally distinct processors with their interrupt management area, regions of system memory, and I/O adapter bus slots. The partition's resources are represented by its own open firmware device tree to the OS image.
Each distinct OS or image of an OS running within the platform are protected from each other, such that software errors on one logical partition cannot affect the correct operation of any of the other partitions. This is provided by allocating a disjoint set of platform resources to be directly managed by each OS image and by providing mechanisms for ensuring that the various images cannot control any resources that have not been allocated to it. Furthermore, software errors in the control of an OS's allocated resources are prevented from affecting the resources of any other image. Thus, each image of the OS (or each different OS) directly controls a distinct set of allocable resources within the platform.
In order to control and/or manage the multitude of operating systems in the various partitioned environments, a single global software system and/or firmware component, which may be termed a hypervisor, is generally utilized. The hypervisor is generally configured to manage and/or control the allocation/use of the resources available on the single computer hardware system by each of the respective operating systems. For example, the hypervisor may control resource access and allocation for the overall computer system data storage mediums, access to the available system CPUs, and/or any of the system input/output (IO) device adapters, along with other known features of computer systems. The hypervisor may be further configured to insure that the respective individual partitions are unaware of the existence of each other and do not interfere with their respective operations.
Resources are assigned to specific partitions by allocating a range of addresses to a partition, and then assigning resources that are to be allocated to that partition, an address within the allocated range of the partition. For example, in a logically partitioned system, IO (Input/Output) resources are allocated to logical partitions, among other resources. Many of these IO resources are not sharable among partitions, rather dedicated to one of the partitions. The IO address space falls outside the range of a partition's allowed address space. So a program, for example, a device driver, running in a partition has to make a hypervisor call in order to access the IO devices. While the hypervisor effectively manages access to the IO resources, there is a certain amount of overhead associated with making a hypervisor call.